"""
@Project ：Python_Learning 
@File    ：13.罗马数字转整型.py
@IDE     ：PyCharm 
@Author  ：zhupp
@Date    ：2024/10/13 15:28 
"""



roman_dict = {
    'I': 1,
    'V': 5,
    'X': 10,
    'L': 50,
    'C': 100,
    'D': 500,
    'M': 1000}


# 这题还有点妙的，不能被吓到。只要发现，“当前位置的元素比下个位置的元素小，就减去当前值，否则加上当前值”。
# VII 5 1 1
def roman_to_int(s: str) -> int:
    result = 0
    n = len(s)
    for index, roman in enumerate(s):
        value = roman_dict[roman]    # 传入字符串对应的值
        if index < n-1 and value < roman_dict[s[index+1]]:    # 每一个字符串的中的字符都和紧接后面的字符相比较
            result -= value
        else:
            result += value
    return result


print(roman_to_int("VII"))